package com.example.memory;

/**
 * 目标：认识多个变量指向同一个数组对象的形式,并掌握其注意事项
 */
public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr1 = {11, 22, 33};

        // 把int类型的数组变量arr1赋值给int类型的数组变量arr2(即arr2执行arr1所在的空间)
        int[] arr2 = arr1;

        // 输出的两个地址是相同的,因为指向的都是同一片内存空间
        System.out.println(arr1);
        System.out.println(arr2);

        // 因为指向的都是同一片内存空间,所以使用arr2修改元素,在使用arr1去访问,访问到的元素也是99
        arr2[1] = 99;
        System.out.println(arr1[1]);

        // 如果把null赋值给arr2,此时arr2不在指向任何空间
        arr2 = null; // 拿到的数组变量中存储的值是null
        System.out.println(arr2); // 输出的是null

        // 输出是没有问题的,但是此时在去访问数组元素会报错,会报空指针异常
        // System.out.println(arr2[0]);
        // System.out.println(arr2.length);
    }
}
